package Test;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.Objects;

public class test1 {
    public static void main(String[] args) {
         /*
            需求：
                定义一个继承结构：
                                    动物
                         |                           |
                         猫                          狗
                      |      |                    |      |
                   波斯猫   狸花猫                泰迪   哈士奇


                 属性：名字，年龄
                 行为：吃东西
                       波斯猫方法体打印：一只叫做XXX的，X岁的波斯猫，正在吃小饼干
                       狸花猫方法体打印：一只叫做XXX的，X岁的狸花猫，正在吃鱼
                       泰迪方法体打印：一只叫做XXX的，X岁的泰迪，正在吃骨头，边吃边蹭
                       哈士奇方法体打印：一只叫做XXX的，X岁的哈士奇，正在吃骨头，边吃边拆家

            测试类中定义一个方法用于饲养动物
                public static void keepPet(ArrayList<???> list){
                    //遍历集合，调用动物的eat方法
                }
            要求1：该方法能养所有品种的猫，但是不能养狗
            要求2：该方法能养所有品种的狗，但是不能养猫
            要求3：该方法能养所有的动物，但是不能传递其他类型
         */

        test1狸花猫 test1狸花猫=new test1狸花猫();
       test1狸花猫.setAge(11);
       test1狸花猫.setName("小狸");
       test1波斯猫 test1波斯猫=new test1波斯猫();
       test1波斯猫.setName("小波");
       test1波斯猫.setAge(12);
       test1泰迪 test1泰迪=new test1泰迪();
       test1泰迪.setName("小泰");
       test1泰迪.setAge(13);
       test1哈士奇 test1哈士奇=new test1哈士奇();
       test1哈士奇.setName("小哈");
       test1哈士奇.setAge(14);

        ArrayList<test1狸花猫> list1 = new ArrayList<>();
        ArrayList<test1波斯猫> list2 = new ArrayList<>();
        ArrayList<test1泰迪> list3 = new ArrayList<>();
        ArrayList<test1哈士奇> list4 = new ArrayList<>();

        //要求1：该方法能养所有品种的猫，但是不能养狗
        keepPet1(list1);
        keepPet1(list2);

        //要求2：该方法能养所有品种的狗，但是不能养猫
        keepPet2(list3);
        keepPet2(list4);
        //该方法能养所有的动物，但是不能传递其他类型
        keepPet3(list1);
        keepPet3(list2);
        keepPet3(list3);
        keepPet3(list4);


    }
    //要求1：该方法能养所有品种的猫，但是不能养狗
    public static void keepPet1(ArrayList<? extends test1Cat> list){
        Iterator<? extends test1Cat> it = list.iterator();
        while (it.hasNext()){
            it.next().eating();
        }
    }
    //要求2：该方法能养所有品种的狗，但是不能养猫
    public static void keepPet2(ArrayList<? extends test1Dog> list){
        Iterator<? extends test1Dog> it = list.iterator();
        while (it.hasNext()){
            it.next().eating();
        }
    }
    //该方法能养所有的动物，但是不能传递其他类型
    public static void keepPet3(ArrayList<? extends test1animal> list){
        Iterator<? extends test1animal> it = list.iterator();
        while (it.hasNext()){
            it.next().eating();
        }
    }
}
